﻿using Autofac;
using System.Reflection;

namespace L.M.Review.Write.API.AutoFacInfor
{
    public class GetAutoFac : Autofac.Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            // 通过反射加载 RodeInfor.Repository 程序集
            var Repository = Assembly.Load("L.M.Review.Infrastruecure");

            // 通过反射加载 RodeInfor.Services 程序集
            var Services = Assembly.Load("L.M.Review.Application");

            // 将 Repository 程序集中以 "Repository" 结尾的类注册到 Autofac 容器中，并自动实现其接口
            builder.RegisterAssemblyTypes(Repository)
                   .Where(c => c.Name.EndsWith("Repository")) // 筛选类名以 "Repository" 结尾的类
                   .AsImplementedInterfaces(); // 注册实现的接口

            // 将 Services 程序集中以 "Services" 结尾的类注册到 Autofac 容器中，并自动实现其接口
            builder.RegisterAssemblyTypes(Services)
                   .Where(c => c.Name.EndsWith("Services")) // 筛选类名以 "Services" 结尾的类
                   .AsImplementedInterfaces(); // 注册实现的接口

            // 调用基类的 Load 方法，将注册的组件加载到容器中
            //builder.RegisterType(typeof(MaingFioles));


            base.Load(builder);
        }
    }
}
